// 1446.[合并区间]内存空间长度 https://oj.rnd.huawei.com/problems/1446/details
//假设用区间 [start end) 表示一次内存初始化操作的范围，end 减去 start
//表示初始化的内存长度。
//给定一组内存初始化操作，请计算最终初始化的内存空间的总长度。
//假设: 内存初始化操作都会成功；
//同一块内存允许重复初始化。
//输入 首行一个整数 n，表示一组内存初始化操作的次数，取值范围 [1,100000]
//接下来 n 行，每行表示一次内存初始化，格式为start end，取值范围 0 <= start <
// end <= 10^9 输出 一个整数，表示最终初始化的内存空间的总长度。 输入 3 2 4 3 7
// 4 6
//输出 5
//[2, 4) 和 [3, 7) 合并后为[2, 7)，[2, 7) 和 [4, 6) 合并后为[2, 7)，总长度为7 -
// 2 = 5 。 输入 3 3 7 2 4 10 30 输出 25 [3, 7) 和 [2, 4) 合并后为[2, 7)，[2, 7)
//和 [10, 30) 不重合，总长度为(7 - 2) + (30 - 10) = 25 。

#include <algorithm>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <sstream>
#include <stack>
#include <string>
#include <utility>
#include <vector>
using namespace std;

#define DEBUG
#ifdef DEBUG
#define PF(...) printf(__VA_ARGS__)
#else
#define PF(...)
#endif

class Solution {
 public:
  // 待实现函数，在此函数中填入答题代码
  struct Section {
    int begin = 0, end = 0;
  };
  int GetValidLength(const vector<vector<int>> &intervalSet) const {
    auto interSet2(intervalSet);
    std::sort(interSet2.begin(), interSet2.end());
    // 合并区间 vector
    vector<Section> vtMemory;
    for (auto val : interSet2) {
      int curBegin = val[0], curEnd = val[1];
      if (vtMemory.empty() || vtMemory.back().end < curBegin) {
        vtMemory.push_back({curBegin, curEnd});
      } else {
        vtMemory.back().end = max(vtMemory.back().end, curEnd);
      }
    }
    int sum = 0;
    for (auto mem : vtMemory) sum += (mem.end - mem.begin);
    return sum;
  }
};

inline int ReadInt() {
  int number;
  cin >> number;
  return number;
}

template <typename T>
inline vector<T> ReadVector(int size) {
  vector<T> objects(size);
  for (int i = 0; i < size; ++i) {
    cin >> objects[i];
  }
  return objects;
}

int main() {
  int row = ReadInt();

  vector<vector<int>> intervalSet;

  for (int i = 0; i < row; i++) {
    vector<int> oneRow = ReadVector<int>(2);
    intervalSet.push_back(oneRow);
  }

  Solution solu;
  int result = solu.GetValidLength(intervalSet);
  cout << result << endl;

  return 0;
}
